#pragma once
//
// Created by admin on 2024/5/29.
//

#ifndef _CMD_DY_H
#define _CMD_DY_H

//#include "system.h"


#ifdef __cplusplus
extern "C" {
#endif

#ifndef uchar
    typedef unsigned char uchar;
#endif

#ifndef ushort
    typedef unsigned short ushort;
#endif

#ifndef uint
    typedef unsigned int uint;
#endif

    enum {
        PRO_OK,                         /*!< 正常 */
        VERSION_ERROR,                  /*!< 协议版本错误 */
        CHECK_SUM_ERROR,                /*!< 协议校验和错误 */
        VALUE_ERROR,                    /*!< 数据无效 */
        HANDLE_ERROR,                   /*!< 处理错误 */
        CMD_ERROR,                      /*!< 命令错误 */
        HOT_CONFLICT,                   /*!< 热点追踪冲突>*/
        OUT_FORMAT_ERROR,               /*!< 输出格式冲突>*/
        TIMEOUT_ERROR,
        IDLE_BUF_GET_ERROR,             /*!< 空闲buf获取错误 */
    };
    typedef uchar ERROR_T;


    typedef enum {
        DY_CMD_COLOR = 0xAD, // 伪彩切换
        DY_CMD_ZOOM = 0XAC, // 缩放
        DY_CMD_NUC = 0x02, // 校正
        DY_CMD_AUTO_NUC = 0x01, // 自动校正使能
        DY_CMD_SHUTTER = 0x11, // 挡片控制
        DY_CMD_GRID = 0xB3, // 棋盘格
        DY_CMD_BAUD = 0x77, // 波特率
        DY_CMD_SYNC = 0xA3, // 同步切换
        DY_CMD_DIVISION = 0x43, // 分划
        DY_CMD_SAVE = 0x7F, // 保存
        DY_CMD_STATE = 0xB5, //状态查询
    } Dy_Cmd_t;



    /**
     * 自检结果.
     */
    typedef struct {
        uchar state : 2;
        uchar reserve : 2;
        uchar ddr : 1;
        uchar sensor : 1;
        uchar flash : 1;
        uchar temp : 1;
    }Dy_SelfCheck_Result_t;


    ERROR_T dy_protocol_handler(uchar* data);


#ifdef __cplusplus
}
#endif

#endif //_CMD_DY_H
